import java.io.File;
import java.io.IOException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-04-10
 * Time: 19:30
 */
public class Demo4 {//查找文件并删除
    public static void main(String[] args) {
        // 1.先输入要扫描的目录，以及要删除的文件名
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要扫描的路径: ");
        String rootDriPath = scanner.next();
        System.out.println("请输入要删除的文件名: ");
        String toDeleteName = scanner.next();
        File rootDir = new File(rootDriPath); //判断这个路径是不是正确
        if (!rootDir.isDirectory()){
            System.out.println("输入的扫描路径有误！");
            return;
        }
        //如果输入成功 那么就遍历目录 把指定文件种 所有文件和子目录都遍历一遍，从而找到要删除的目录
        scanner(rootDir,toDeleteName);



    }

    private static void scanner(File rootDir, String toDeleteName) {
        //1.先列出 rootDir 中都有哪些内容
        File[] files = rootDir.listFiles();
        if (files == null){
            // rootDir 是一个空项目
            return;
        }
        // 2.遍历当前列出的这些内容，如果是个普通文件 就检测文件名是否是要删除的文件
        // 如果是目录 就递归的进行遍历
        for (File f:files) {
            if (f.isFile()){
                if (f.getName().contains(toDeleteName)){
                    // 不要求文件名字完全一样，只要文件名中包含了一个关键字即可删除
                    // 进行删除操作
                    deleteFile(f);
                }
            }else if (f.isDirectory()){
                // 目录就是递归的进行遍历
                scanner(f,toDeleteName);
            }
        }
    }

    private static void deleteFile(File f) {
        try {
            System.out.println(f.getCanonicalPath()+ " 确认要删除吗！(Y/N)");
            Scanner scanner = new Scanner(System.in);
            String choice = scanner.next();
            if (choice.equals("y") || choice.equals('Y')){
                f.delete();
                System.out.println("文件删除成功！");
            }else{
                System.out.println("文件取消删除！");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
